/**
 * 数组过滤器 {{ list | optionKV(key) }}
 *
 * @param object 传来的数组，例如：SECTION_CHARGE = {CHARGE:{key: "C", value: "收费"}, FREE:{key: "F", value: "免费"}}
 * @param key 例如：C
 * @returns {string} 例如：收费
 */
let optionKV = (object, key) => {
    // 先判断参数是否为空
    if (!object || !key) {
        return "";
    } else {
        let result = "";
        for (let enums in object) {
            if (key === object[enums]["key"]) {
                result = object[enums]["value"];
            }
        }
        return result;
    }
};

/**
 * 数组过滤器 {{ list | optionKVArrays(key) }}
 *
 * @param list 传来的数组，例如：[{key: "C", value: "收费},{key: "F", value: "免费"}]
 * @param key 例如：C
 * @returns {string} 例如：收费
 */
let optionKVArrays = (list, key) => {
    // 先判断参数是否为空
    if (!list || !key) {
        return "";
    } else {
        let result = "";
        for (let i = 0; i < list.length; i++) {
            if (key === list[i]["key"]) {
                result = list[i]["value"];
            }
        }
        return result;
    }
};

/**
 * 增加时长格式化
 *
 * @param value 例：36000
 * @returns {String} 例如：10:00:00
 */
let formatSecond = (value) => {
    value = value || 0;
    // 先将传来的值全部转换为秒
    let second = parseInt(value, 10); // 秒
    let minute = 0; // 分
    let hour = 0; // 小时
    if (second > 60) {
        // 当时长大于60秒时，才需要做转换
        minute = Math.floor(second / 60);
        second = Math.floor(second % 60);
        // 如果时长大于60分时
        if (minute > 60) {
            // 转换得到小时
            hour = Math.floor(minute / 60);
            minute = Math.floor(minute % 60);
        }
    }
    // 当时间小于60秒时直接进行显示，不需要进行处理

    // 将秒进行格式化处理
    let result = "" + PrefixInteger(second, 2) + "";
    // 拼上分钟
    result = "" + PrefixInteger(minute, 2) + ":" + result;
    // 拼上小时
    result = "" + PrefixInteger(hour, 2) + ":" + result;
    // 将拼接好的时间格式返回
    return result;
}

/**
 * 格式化为指定长度，在前面补0
 *
 * @param num 要进行格式化的数字
 * @param length 要格式化的长度
 * @constructor
 */
function PrefixInteger(num, length) {
    return (Array(length).join('0') + num).slice(-length);
}

/**
 * 格式化文件大小
 *
 * @param value
 * @return {string}
 */
let formatFileSize = (value) => {
    value = value || 0;
    let result;
    if (value > 100 * 1024) {
        // 文件大于100KB就以MB为单位
        result = Math.round((value / 1024 / 1024) * 100) / 100 + "MB";
    } else {
        // 如果文件大小不大于100KB就以KB为单位
        result = Math.round((value / 1024) * 100) / 100 + "KB";
    }

    return result;
}

export default {
    optionKV,
    formatSecond,
    formatFileSize
}
